"""
用户物品管理模块 - 负责用户个人物品的管理
作者：E同学
功能：
1. 查看用户发布的物品
2. 管理物品状态（标记为已售出/下架/恢复）
"""
import datetime

from 校园二手市场管理站 import item_manager


# E同学负责的函数
def get_my_items(all_items, publisher_id):
    """获取用户发布的物品"""
    return [item for item in all_items if item['publisher_id'] == publisher_id]


# 查看我发布的物品功能
def view_my_posted_items_interaction(all_items):
    """查看用户发布的物品"""
    print("\n\033[1;34m===== 查看我发布的物品 📦 =====")
    publisher_id = input("请输入发布者标识: ").strip()
    if not publisher_id:
        print("\033[1;31m发布者标识不能为空！ ❌")
        return

    my_items = get_my_items(all_items, publisher_id)

    if not my_items:
        print("\033[1;30m未找到您发布的物品！ 🌱")
        return

    print("\n\033[1;36m您发布的物品:")
    for item in my_items:
        print(item_manager.format_item_for_display(item, detail_level="full"))
        print("-" * 65)


# 管理我的物品(探索功能)
def manage_my_items_interaction(all_items, update_func):
    """查看和管理用户物品"""
    print("\n\033[1;34m===== 管理我的物品(探索功能) 🛠️ =====")
    publisher_id = input("请输入发布者标识: ").strip()
    if not publisher_id:
        print("\033[1;31m发布者标识不能为空！ ❌")
        return

    my_items = get_my_items(all_items, publisher_id)

    if not my_items:
        print("\033[1;30m未找到您发布的物品！ 🌱")
        return

    print("\n\033[1;36m您发布的物品:")
    for item in my_items:
        print(item_manager.format_item_for_display(item, detail_level="full"))
        print("-" * 65)

    # 管理物品选项
    manage_items(my_items, update_func)


# E同学负责的函数
def manage_items(my_items, update_func):
    """管理物品状态"""
    while True:
        item_id = input("\n\033[0m请输入要管理的物品ID（输入0返回）: ").strip()
        if item_id == '0':
            return

        try:
            item_id = int(item_id)
            item = next((item for item in my_items if item['item_id'] == item_id), None)
            if not item:
                print("\033[1;31m未找到该物品ID！ ❌")
                continue

            print(f"\n\033[1;35m物品: {item['name']}")
            print("1. ✅ 标记为已售出")
            print("2. 🚫 下架此物品")
            print("3. 🔄 恢复此物品（从已下架状态恢复）")
            print("4. ↩️ 返回")

            action = input("请选择操作（1-4）: ").strip()
            if action == '1':
                if item['status'] == 'sold':
                    print("\033[1;31m该物品已经标记为已售出！ ❌")
                else:
                    item['status'] = 'sold'
                    item['post_time'] = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
                    update_func(item)
                    print("\033[1;32m物品已成功标记为已售出！ ✅")

            elif action == '2':
                if item['status'] == 'removed':
                    print("\033[1;31m该物品已经下架！ ❌")
                else:
                    item['status'] = 'removed'
                    item['post_time'] = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
                    update_func(item)
                    print("\033[1;32m物品已成功下架！ ⏸️")

            elif action == '3':
                if item['status'] != 'removed':
                    print("\033[1;31m该物品无需恢复！ ❌")
                else:
                    item['status'] = 'available'
                    item['post_time'] = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
                    update_func(item)
                    print("\033[1;32m物品已成功恢复为在售状态！ ✨")

            elif action == '4':
                return

            else:
                print("\033[1;31m无效的选择！ ❌")

        except ValueError:
            print("\033[1;31m请输入有效的物品ID！ ❌")